<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>函数类型</title>
    <script>
        function add(i,j){
            let result = i+j;
            console.log("返回值:"+result);
            return result;
        }

        function fn(){
            console.log("这是fn方法")
        }

        function f1(){
            let result = fn();
            console.log(result)
        }
        function f2(){
            // 在js中,方法的参数只是用于接收arguments数组中的数据的
            // 第一个参数接收的是下标为0的元素
            // 第n个参数接收的是下标为n-1的元素
            // let a = arguments[0];
            // let b = arguments[1];
            // let c = arguments[2];
            // let d = arguments[3];
            // let e = arguments[4];
            // let result = a+b+c+d+e;

            let result = 0;
            // 因此,遇到不定长参数的时候,可以直接遍历数组中所有元素进行求和
            for(let i = 0; i < arguments.length; i++){
                result+=arguments[i];
            }

            console.log("返回值:"+result)
            return result;
        }

        function fn1(){
            let fn = f2;
            console.log(typeof f2); // function
            let fn2 = f2(1,2,3);
            console.log(typeof fn2); // number
        }

        function fn2(){
            let fn = function(){
                console.log("这是函数");
            };
            console.log(typeof fn);
        }

        function fn3(){
            // ES6开始支持Lambda表达式
            let fn = () => {
                return "fn";
            };

            fn = () => "fn2";
            console.log(fn());

            fn = (i,j) => {
                console.log(i+j);
                return i+j;
            };
            console.log(fn(1,2));
            console.log(typeof fn)
        }
    </script>
</head>
<body>
<button onclick="add(2,3,4)">函数类型</button><br>
<button onclick="f1()">测试</button><br>
<button onclick="f2(1,2,3,4,5,6,7,8,9,10)">测试</button><br>
<button onclick="fn1()">函数定义方式一</button>
<button onclick="fn2()">函数定义方式二</button>
<button onclick="fn3()">函数定义方式三</button>
</body>
</html>